Cryptography techniques have been widely used for transmitting data over networks to provide information security. Several different techniques and algorithms for encrypting information have been proposed, and many of these techniques are currently being widely used in the industry for encryption. Encryption techniques can be classified either as symmetric key encryption or public key encryption. The main criteria for selecting a particular technique and algorithm for encryption are the level of security provided by the technique, overall performance, and ease of implementation.
Symmetric key encryption involves using the same cryptographic key to encrypt and decrypt the data message in question. Typically, the decryption key can be computed from the encryption key and vice versa. Algorithms for symmetric key encryption can usually be electronically executed very quickly. However, a copy of the cryptographic key should be kept secret or otherwise securely maintained at each end of the encrypted transmission. Some of the most well known symmetric key data encryption techniques are simple substitution ciphers, homophonic substitution ciphers, polyalphabetic substitution ciphers, transposition ciphers, composition of ciphers, and stream ciphers.